package javafx.demo;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TestScrollPane extends Application {

	final ScrollPane sp = new ScrollPane();
	final Image[] images = new Image[5];
	final ImageView[] pics = new ImageView[5];
	final VBox vb = new VBox();
	final Label fileName = new Label();
	final String[] imageNames = new String[] { "../image/a/fw1.png", "../image/a/fw2.png", "../image/a/fw3.png",
			"../image/a/fw4.png", "../image/a/fw5.png" };

	@Override
	public void start(Stage stage) {
		VBox box = new VBox();
		Scene scene = new Scene(box, 180, 180);
		stage.setScene(scene);
		stage.setTitle("Scroll Pane");
		box.getChildren().addAll(sp, fileName);
		VBox.setVgrow(sp, Priority.ALWAYS);

		fileName.setLayoutX(30);
		fileName.setLayoutY(160);

		for (int i = 0; i < 5; i++) {
			images[i] = new Image(getClass().getResourceAsStream(imageNames[i]));
			pics[i] = new ImageView(images[i]);
			pics[i].setFitWidth(100);
			pics[i].setPreserveRatio(true);
			vb.getChildren().add(pics[i]);
		}

		sp.setVmax(440);
		sp.setPrefSize(115, 150);
		sp.setContent(vb);
		sp.vvalueProperty().addListener(new ChangeListener<Number>() {
			public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
				fileName.setText(imageNames[(new_val.intValue() - 1) / 100]);
			}
		});
		stage.show();
	}

	public static void main(String[] args) {
		launch(args);
	}
}
